package homework.day01;

import java.util.Scanner;
import java.util.Random;
/**
 * 提高题
 * 生成一个4位验证码(数字和字母的组合)
 * 然后输出到控制台并提示用户输入该验证码，只要用户输入正确(无论大小写都算)，
 * 就输出:验证码正确，否则输出:验证码错误
 *
 *
 * 验证码如何生成?
 * 思路导向填空:
 * 1:要先确定生成的内容范围(列出所有可以出现的字符):
 *  1-9 A-Z a-z
 * 2:先思考如何生成其中的一个字符呢？
 *   2.1:确定怎么保存这些可以出现的字符:
 *   字符串拼接
 *   2.2:怎么能随机抽选一个
 *   charAt(随机数)
 *
 * 3:既然可以生成一个，如何做到生成4个或更多个?
 *  循环
 * 4:怎么在生成这些字符的过程中将他们组成一个字符串?
 *
 * 5:获取到用户输入的字符串后怎么与之比较,要利用到哪些字符串操作?
 * equalsIgnoreCase()
 *
 * @author Jobs
 *
 */
public class Test06 {
    public static void main(String[] args) {
        // 传入要生成的验证码的位数，随机生成验证码
        int length = 4;
        String code = getCode(length);

        // 获取用户输入的验证码
        Scanner sc = new Scanner(System.in);
        System.out.println("请在下面输入你看到的验证码:" + code);
        String inputCode = sc.nextLine();
        if(code.equalsIgnoreCase(inputCode)){
            System.out.println("验证码正确");
        }else{
            System.out.println("验证码错误");
        }
    }


    public static String getCode(int length){
        // 效率不高
        Random random = new Random();
        String code = "";
        // 1-9 A-Z a-z
        String str = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
        // 根据长度进行循环生成验证码
        for(int i =0 ;i<length;i++){
            int index = random.nextInt(str.length());
            code =  code + str.charAt(index);
        }
        return code;
    }
}
